Nakama In-app Notifications
1人以上のユーザーにメッセージをかんたんにブロードキャストできる
いろんな方法でできる
ゲーム内報酬
ギフトのお知らせ
アラート
通知
受け取り方も色々
接続しているユーザーだけ
接続していないときに通知 -> アプリを次に開いたときに読み取られるまで保存
通知を利用してカスタムアクション
app内だけで通知される
app外の通知と組み合わせる事もできる
Send Notification
通知は、server code として実行する (lua , go)
クライアント -> 別クライアントの場合は、RPC でやる
code: .lua
local nk = require("nakama")
local user_id = "user id to send to"
local sender_id = nil -- "nil" for server sent.
local content = {
item_id = "192308394345345",
item_icon = "storm_bringer_sword.png"
}
local subject = "You earned a secret item!"
local code = 1
local persistent = true
-- 永続メッセージ
nk.notification_send(user_id, subject, content, code, sender_id, persistent)
mark as persistent
永続メッセージとして保存する。
通知が読み取られないときは、読み取られるまで保存される
Recieve Notification
NakamaSocketオブジェクトに、通知に対してコールバックを登録すると
通知が来たときに実行される。
(いくつ登録してもできそう)
code: .py
func _ready():
# First, setup the socket as explained in the authentication section.
socket.connect("received_notification", self, "_on_notification")
func _on_notification(p_notification : NakamaAPI.ApiNotification):
print(p_notification)
print(p_notification.content)
複数のメッセージが来た場合、パフォーマンスの都合上でバッチ処理されるが、
通知1件ごとにコールバック実行
List Notification
オフラインのときにそのユーザーが受け取った通知をリスト表示
詳細な実装はアプリに依存されるが、サーバーに再接続したタイミングがおすすめ
code: .sh
-H 'Authorization: Bearer <session token>'
query param
limit: int
cursor: string
limitの最大値は100
すべて取得するにはキャッシュ可能なカーソルで accumulate する。
cashble cursorは取得された通知の最新の位置
デバイスストレージに保存して、再接続したときに利用することで
オフライン中に見逃した可能性のある通知に追いつける。
DELETE Notification
ユーザーが消費した通知を削除することで、古いメッセージの蓄積を防ぐ。
削除すると復元できない
通知idを指定する
code: .sh
-H 'Authorization: Bearer <session token>'
Notification code
int
0以下の数値は、Nakamaで利用されるイベント用に予約されている
0より大きい値は、ユーザーが独自通知コードに利用できる
0
-1: あるユーザーからのチャット申し込み
-2: あるユーザーがフレンド申請してきた
-3: あるユーザーが自分のフレンド申請を承認した
-4: あるグループへ自分の参加が許可された
-5: あるユーザーが自分のグループへ参加申請している
-6: 自分のフレンドがゲームに参加した